package com.itheima.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class UserController {


    /**
     * modelAndView
     *     代表两个对象 模型Model+视图地址view
     *       addObject 类似于 request.setAttribute()  把数据存到域中
     *       setViewName  就是告知视图解析器 视图的 简略版地址
     *
     *       处理器处理的结果
     *          1: 响应的数据 model！
     *          2: 响应的结果地址！
     * @param modelAndView
     * @return
     */
    @RequestMapping("/sayhello")
    public ModelAndView sayHello(ModelAndView modelAndView){

        modelAndView.addObject("msg","完成了入门案例");

        modelAndView.setViewName("result");
        return modelAndView;
    }

    /**
     *
     * @param model  代表我们响应的数据
     * @return  string类型 代表 jsp的简略路径
     *    当前这种写法 进行了解耦    把视图和模型进行了拆分
     */
    @RequestMapping("/sayhi")
    public String sayHi(Model model){

        model.addAttribute("msg","完成了入门案例，模型使用model对象存储");
       // 默认情况下 当请求了  /sayhi 这个处理器以后
        //  会把数据 存到域中 并且  根据前端控制器 找到了 result.jsp页面
        // jsp页面把数据从域中取出来
        // 说明直接return "需要请求转发的页面的简略路径"

        //  在处理前端页面为 jsp的时候 提供了一种方式 可以完成重定向
        //  如果想要 在jsp这种返回的页面上 进行重定向 就需要return 这里写redirect:重定向的地址  那么就不会经过视图解析器
                                       //  你的数据就不是在域中了  而是在访问地址的参数列表上
         //如果用了重定向 可以重定向其他网站
//        return "redirect:http://www.baidu.com";
//        return "redirect:/pages/result.jsp";
        return "forward:/pages/result.jsp";
    }

    /**
     *
     * @param modelMap  是Model的实现 model没有get方法 modelmap有get方法
     * @return
     */
    @RequestMapping("/sayhehe")
    public String sayHeHe(ModelMap modelMap){

        modelMap.addAttribute("msg","完成了入门案例，模型使用modelMap对象存储");

        modelMap.get("msg");

        return "result";
    }
}
